package leetcode; /**
 * description:
 * author:张腾
 * date:2021-07-05
 */

/**
 * 字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。比如，字符串aabcccccaaa会变为a2bc5a3。你可以假设字符串中只包含大小写英文字母（a至z）。
 * 只有一个字符，1 不用写
 * 要求：时间复杂度O（N）
 */
public class YSZFC {
    public String compressString(String param) {
        // write code here
        if (param.length()==0 || param==null || param.length()==1) return param;
        int left=0, right=0;

        StringBuffer sb = new StringBuffer();
        for (int i = 1; i < param.length(); i++) {
            if (param.charAt(i)==param.charAt(i-1)) right++;
            else {
                if (left==right){
                    left++;
                    right++;
                    sb.append(param.charAt(i-1));
                    if (i==param.length()-1) sb.append(param.charAt(i));
                }else{
                    sb.append(param.charAt(left)+String.valueOf(right-left+1));
                    right++;
                    left = right;
                    if (i==param.length()-1) sb.append(param.charAt(i));
                }
            }
        }
        if (left!=right) sb.append(param.charAt(right)+String.valueOf(right-left+1));

        return sb.toString();
    }
}
